#pragma once

#include "ContentManager.h"
#include "ActorManager.h"
#include "CameraManager.h"
#include "GraphicsDeviceManager.h"
#include "GuiManager.h"

class Game
{
protected:
	Game();
public:
	virtual ~Game();
protected:
	virtual void			Initialize();
	virtual void			LoadContent();
	virtual void			Update(float elapsedTime);
	virtual void			Draw();
	virtual void			UnloadContent();
	virtual void			Exit();
public:
	const float 			GetElapsedTime() const;
	const bool				IsExiting() const;
	ContentManager*			GetContentManager() const;
	ActorManager*			GetActorManager() const;
	CameraManager*			GetCameraManager() const;
	GraphicsDeviceManager*	GetGraphicsDeviceManager() const;
	GuiManager*				GetGuiManager() const;
private:
	float					m_fElapsedTime;
	bool					m_bIsExiting;
	ContentManager*			m_pContentManager;
	ActorManager*			m_pActorManager;
	CameraManager*			m_pCameraManager;
	GraphicsDeviceManager*	m_pGraphicsDeviceManager;
	GuiManager*				m_pGuiManager;
};